package main;

import javax.swing.*;
import java.awt.*;
import nivel.*;

/**
 * GUINivel representa la interfaz grafica de un determinado nivel. Inicializa
 * los atributos logicos y graficos que conforman el nivel.
 * 
 * @author Agustin Orge (LU.85538)
 * @author Victoria Martinez de la Cruz (LU.87620)
 */
@SuppressWarnings("serial")
public class GUINivel extends JFrame {

	/** Atributos de instancia */
	private Nivel nivel;
	private Thread hiloGravedad;

	/**
	 * Constructor de GUINivel Inicializa el nivel y el panel de contenidos
	 * 
	 * @param n
	 *            nivel
	 */
	public GUINivel(Nivel n) {
		super("Proyecto 2 TDP 2011 - Super Mario Bros (v1)");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(700, 265);
		setBackground(new Color(0, 0, 0));
		setResizable(false);
		nivel = n;
		initGUI();

		// oyentes del frame y gravedad
		this.addKeyListener(nivel.getMario().getManejo());
		hiloGravedad = new Thread(nivel.getGravedad());
		hiloGravedad.start();
	}

	// Metodos

	/**
	 * Inicializa la GUI con los diferentes paneles graficos
	 */
	protected void initGUI() {
		getContentPane().add(nivel.getGrafica().getPanelMario().getPanel());
		getContentPane().add(
				nivel.getGrafica().getPanelComponentes().getPanel());
		getContentPane().add(nivel.getGrafica().getPanelFondo().getPanel());

	}

	/**
	 * Utiliza el metodo finalize() de la clase Object para eliminar la
	 * instancia de GUINivel creada
	 */
	public void terminarNivel() {
		try {
			finalize();
		} catch (Throwable e) {
			e.printStackTrace();
		}
	}

}
